package com.menu.system.service.impl;

import com.menu.common.core.domain.entity.SysUser;
import com.menu.common.utils.DateUtils;
import com.menu.common.utils.SecurityUtils;
import com.menu.common.utils.StringUtils;
import com.menu.system.domain.MenuInformt;
import com.menu.system.domain.MenuInformtInfo;
import com.menu.system.mapper.MenuInformtInfoMapper;
import com.menu.system.mapper.MenuInformtMapper;
import com.menu.system.mapper.SysRoleMapper;
import com.menu.system.service.IMenuInformtService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

/**
 * 角色管理Service业务层处理
 *
 * @author ruoyi
 * @date 2024-06-05
 */
@Service
public class MenuInformtServiceImpl implements IMenuInformtService {
    @Autowired
    private MenuInformtMapper menuInformtMapper;
    @Autowired
    private SysRoleMapper roleMapper;
    @Autowired
    private MenuInformtInfoMapper menuInformtInfoMapper;

    /**
     * 查询角色管理
     *
     * @param informtId 角色管理主键
     * @return 角色管理
     */
    @Override
    public MenuInformt selectMenuInformtByInformtId(Long informtId) {
        return menuInformtMapper.selectMenuInformtByInformtId(informtId);
    }

    /**
     * 查询角色管理列表
     *
     * @param menuInformt 角色管理
     * @return 角色管理
     */
    @Override
    public List<MenuInformt> selectMenuInformtList(MenuInformt menuInformt) {



        return menuInformtMapper.selectMenuInformtList(menuInformt);
    }

    /**
     * 新增角色管理
     *
     * @param menuInformt 角色管理
     * @return 结果
     */
    @Override
    @Transactional
    public int insertMenuInformt(MenuInformt menuInformt) {
        menuInformt.setCreateTime(DateUtils.getNowDate());
        menuInformt.setCreateBy(SecurityUtils.getUsername());
        int i = menuInformtMapper.insertMenuInformt(menuInformt);
        batchMenuProductInfoPost(menuInformt);
        return i;
    }

    /**
     * 修改角色管理
     *
     * @param menuInformt 角色管理
     * @return 结果
     */
    @Override
    public int updateMenuInformt(MenuInformt menuInformt) {
        menuInformt.setUpdateTime(DateUtils.getNowDate());
        menuInformtInfoMapper.deleteMenuInformtInfoByInformtId(menuInformt.getInformtId());
        batchMenuProductInfoPost(menuInformt);
        return menuInformtMapper.updateMenuInformt(menuInformt);
    }

    /**
     * 批量删除角色管理
     *
     * @param informtIds 需要删除的角色管理主键
     * @return 结果
     */
    @Override
    public int deleteMenuInformtByInformtIds(Long[] informtIds) {
        return menuInformtMapper.deleteMenuInformtByInformtIds(informtIds);
    }

    /**
     * 删除角色管理信息
     *
     * @param informtId 角色管理主键
     * @return 结果
     */
    @Override
    public int deleteMenuInformtByInformtId(Long informtId) {
        return menuInformtMapper.deleteMenuInformtByInformtId(informtId);
    }

    public void batchMenuProductInfoPost(MenuInformt menuInformt) {
        Long[] posts = menuInformt.getProductIds();
        if (StringUtils.isNotEmpty(posts)) {
            // 新增用户与岗位管理
            List<MenuInformtInfo> list = new ArrayList<MenuInformtInfo>(posts.length);
            for (Long postId : posts) {
                MenuInformtInfo up = new MenuInformtInfo();
                up.setInformtId(menuInformt.getInformtId());
                up.setRoleId(postId);
                list.add(up);
            }
            menuInformtInfoMapper.batchMenuProductInformtId(list);
        }


    }
}
